<!-- 
    构造函数很好用，但是存在资源浪费的问题
    因为构造函数里面有方法，方法又要另外开辟一个空间，多个多想调用要开票多个空间，资源浪费
    两个开辟的内存地址不一样，所以浪费
    
    1.每一个构造函数里面都有一个prototype属性
    作用：我们可以把这些不变的方法，直接定义在prototype对象上，这样所有的独享实例就可以共享这些方法

    2、原型是什么：一个对象，我们也称之为prototype为原型对象
       原型的作用是什么：共享方法
 -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        function Star(uname, age) {
            this.uname = uname;
            this.age = age;
            // this.sing = function () {
            //     console.log('我会唱歌');
            // }
        }
        Star.prototype.sing = function () {  //构造函数的对象里面添加这个方法
            console.log('我会跳舞');

        }
        var ldh = new Star('刘德华', 23);
        var zjl = new Star('周杰伦', 40);
        ldh.sing();
        zjl.sing();
        console.log(ldh.sing === zjl.sing);   //地址相同，给方法只开辟一个内存空间 

        //2.一般情况下，我们的公共属性定义到构造函数里面，公共的方法放在原型的对象上




    </script>
</body>

</html>